package com.example.service;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.common.jwt.JwtTokenUtils;
import com.example.dao.ImGroupMapper;
import com.example.dao.UserMapper;
import com.example.entity.ImGroup;
import com.example.entity.User;
import com.example.common.exception.CustomException;
import com.example.entity.UserDTO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ImGroupService extends ServiceImpl<ImGroupMapper, ImGroup> {

    @Autowired
    private UserMapper userMapper;




    public ImGroup add(ImGroup imGroup) {
        this.save(imGroup); // 使用MyBatis-Plus的save方法
        return imGroup;
    }

    public void delete(Integer id) {
        ImGroup imGroup = this.getById(id);
        imGroup.setType("1");
        this.updateById(imGroup); // 使用MyBatis-Plus的removeById方法
    }

    public void update(ImGroup imGroup) {
        this.updateById(imGroup); // 使用MyBatis-Plus的updateById方法
    }

    public ImGroup findById(Integer id) {
        return this.getById(id); // 使用MyBatis-Plus的getById方法
    }

    public List<ImGroup> findAll() {
        QueryWrapper<ImGroup> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("type", "0"); // 查询 type 为 0 的记录
        // 使用 MyBatis-Plus 的 list 方法执行查询

        return this.list(queryWrapper);
    }

    public PageInfo<ImGroup> findPage(ImGroup search, Integer pageNum, Integer pageSize) {
        User currentUser = JwtTokenUtils.getCurrentUser();
        if (ObjectUtil.isNull(currentUser)) {
            throw new CustomException("token验证失效");
        }
        PageHelper.startPage(pageNum, pageSize);
        List<ImGroup> all = findByCondition(currentUser, search);

        return PageInfo.of(all);
    }

    public List<ImGroup> findByCondition(User user, ImGroup search) {
        // 如果需要根据条件进行查询，可以使用QueryWrapper等方式。这里用Mapper的findBySearch方法
        return this.list(); // 使用MyBatis-Plus的list方法，若需要更复杂的查询可以利用QueryWrapper
    }
}
